package com.zkthink.ceres.pay.wechat.v3.entity.request.profitsharing;

import com.alibaba.fastjson.annotation.JSONField;
import com.zkthink.ceres.pay.wechat.v3.entity.request.BasePayRequest;
import lombok.*;
import lombok.experimental.Accessors;

/**
 * <p>
 * <p>
 * 合单关闭单
 * * 参考文档：https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/combine/chapter3_3.shtml
 *
 * @author vivi.huang
 * @since 2020/5/17
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Builder(builderMethodName = "newBuilder")
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class CreateProfitsharingRequest extends BasePayRequest {

    private static final long serialVersionUID = -8100791351891543014L;

    /**
     * 公众账号ID	appid	string(32)	否	query微信分配的公众账号ID。
     * 示例值：wx8888888888888888
     */
    @JSONField(name = "appid")
    private String appId;

    /**
     * 二级商户号	sub_mchid	string(32)	是	query补差的电商平台二级商户，填写微信支付分配的商户号。
     * 示例值：1900000109
     */
    @JSONField(name = "sub_mchid")
    private String subMchid;

    /**
     * 微信订单号	transaction_id	string(64)	是	query微信支付订单号。
     * 示例值： 4208450740201411110007820472
     */
    @JSONField(name = "transaction_id")
    private String transactionId;

    /**
     * 商户分账单号	out_order_no	string(64)	是	query商户系统内部的分账单号，在商户系统内部唯一（单次分账、多次分账、完结分账应使用不同的商户分账单号），同一分账单号多次请求等同一次。
     * 示例值：P20150806125346
     */
    @JSONField(name = "out_order_no")
    private String outOrderNo;

    /**
     * 分账接收方列表	receivers	array	是	query分账接收方列表，支持设置出资商户作为分账接收方，单次分账最多可有5个分账接收方
     */
    @JSONField(name = "receivers")
    private Receivers receivers;

    /**
     * 是否分账完成	finish	boolean	是	query是否完成分账
     * 1、如果为true，该笔订单剩余未分账的金额会解冻回电商平台二级商户；
     * 2、如果为false，该笔订单剩余未分账的金额不会解冻回电商平台二级商户，可以对该笔订单再次进行分账。
     * 示例值：true
     */
    @JSONField(name = "finish")
    private Boolean finish;


    @Override
    public String getUrl() {
        return null;
    }

    @Override
    public int getReadTimeoutMs() {
        return 0;
    }

    @Override
    public int getConnectTimeoutMs() {
        return 0;
    }

    @Override
    public String getRequestData() {
        return null;
    }
}